package org.ziwei.paipan.biao;

import org.ziwei.paipan.var.DiZhi;

/**
 * 月系诸星表
 * 根据出生月份，定月系诸星宫位
 */
public class YueXiZhuXingBiao {

	/**
	 * 以辰宫起正月，顺数到生月为左辅星宫位。以戌宫起正月，逆数到生月为右弼星所在宫位。
	 * 如农历五月，则左辅从辰宫顺数五宫，在申宫安左辅星。右弼则以戌宫逆行五宫，在午宫安之。
	 */
	private static DiZhi[] zuoFuBiao = {DiZhi.CHEN,DiZhi.SI,DiZhi.WU,DiZhi.WEI,DiZhi.SHEN,DiZhi.YOU,DiZhi.XU,DiZhi.HAI,DiZhi.ZI,DiZhi.CHOU,DiZhi.YIN,DiZhi.MAO};
	private static DiZhi[] youBiBiao = {DiZhi.XU,DiZhi.YOU,DiZhi.SHEN,DiZhi.WEI,DiZhi.WU,DiZhi.SI,DiZhi.CHEN,DiZhi.MAO,DiZhi.YIN,DiZhi.CHOU,DiZhi.ZI,DiZhi.HAI};
	
	/**
	 * 根据出生月份，返回左辅所在宫支
	 * @param month 出生月份
	 * @return DiZhi
	 */
	public static DiZhi anZuoFu(int month){
		return zuoFuBiao[month];
	}

	/**
	 * 根据出生月份，返回右弼所在宫支
	 * @param month 出生月份
	 * @return DiZhi
	 */
	public static DiZhi anYouBi(int month){
		return youBiBiao[month];
	}
	
	/**
	 * 天刑天姚以生月来定。从酉宫起正月顺行到生月安天刑，从丑宫起正月顺得至生月按天姚。
	 * 如阴历五月，则天刑在丑，天姚在巳。
	 */
	private static DiZhi[] tianXingBiao = {DiZhi.YOU,DiZhi.XU,DiZhi.HAI,DiZhi.ZI,DiZhi.CHOU,DiZhi.YIN,DiZhi.MAO,DiZhi.CHEN,DiZhi.SI,DiZhi.WU,DiZhi.WEI,DiZhi.SHEN};
	private static DiZhi[] tianYaoBiao = {DiZhi.CHOU,DiZhi.YIN,DiZhi.MAO,DiZhi.CHEN,DiZhi.SI,DiZhi.WU,DiZhi.WEI,DiZhi.SHEN,DiZhi.YOU,DiZhi.XU,DiZhi.HAI,DiZhi.ZI};

	/**
	 * 根据出生月份，返回天刑所在宫支
	 * @param month 出生月份
	 * @return DiZhi
	 */
	public static DiZhi anTianXing(int month){
		return tianXingBiao[month];
	}

	/**
	 * 根据出生月份，返回天姚所在宫支
	 * @param month 出生月份
	 * @return DiZhi
	 */
	public static DiZhi anTianYao(int month){
		return tianYaoBiao[month];
	}
	
	/**
	 * 天巫由巳宫起，按巳申寅亥四宫顺序，分排十二月的天巫星位。
	 */
	private static DiZhi[] tianWuBiao = {DiZhi.SI,DiZhi.SHEN,DiZhi.YIN,DiZhi.HAI,DiZhi.SI,DiZhi.SHEN,DiZhi.YIN,DiZhi.HAI,DiZhi.SI,DiZhi.SHEN,DiZhi.YIN,DiZhi.HAI};
	
	/**
	 * 根据出生月份，返回天巫所在宫支
	 * @param month 出生月份
	 * @return DiZhi
	 */
	public static DiZhi anTianWu(int month){
		return tianWuBiao[month];
	}
	
	/**
	 * 解神又名月解，与按生年所安的[年解]有别。月解的起法，按两个月起一宫，例如正月二月同宫，依正月建寅，所以正、二月的月解同在寅的对宫，即申宫。
	 */
	private static DiZhi[] jieShenBiao = {DiZhi.SHEN,DiZhi.SHEN,DiZhi.WU,DiZhi.WU,DiZhi.ZI,DiZhi.ZI,DiZhi.YIN,DiZhi.YIN,DiZhi.CHEN,DiZhi.CHEN,DiZhi.WU,DiZhi.WU};
	
	/**
	 * 根据出生年地支，返回解神所在宫支
	 * @param diZhi 出生年地支
	 * @return DiZhi
	 */
	public static DiZhi anJieShen(int month){
		return jieShenBiao[month];
	}
	
	/**
	 * 阴煞正月由寅宫起，隔一宫安二月，如是逆行轮排十二月。
	 */
	private static DiZhi[] yinShaBiao = {DiZhi.YIN,DiZhi.ZI,DiZhi.XU,DiZhi.SHEN,DiZhi.WU,DiZhi.CHEN,DiZhi.YIN,DiZhi.ZI,DiZhi.XU,DiZhi.SHEN,DiZhi.WU,DiZhi.CHEN};
	
	/**
	 * 根据出生月份，返回阴煞所在宫支
	 * @param month 出生月份
	 * @return DiZhi
	 */
	public static DiZhi anYinSha(int month){
		return yinShaBiao[month];
	}
	
	/**
	 * 一犬二蛇三在龙 四虎五羊六兔宫
	 * 七猪八羊九在虎 十马冬犬腊寅中
	 */
	private static DiZhi[] tianYue1Biao = {DiZhi.XU,DiZhi.SI,DiZhi.CHEN,DiZhi.YIN,DiZhi.WEI,DiZhi.MAO,DiZhi.HAI,DiZhi.WEI,DiZhi.YIN,DiZhi.WU,DiZhi.XU,DiZhi.YIN};

	/**
	 * 根据出生月份，返回天月所在宫支
	 * @param month 出生月份
	 * @return DiZhi
	 */
	public static DiZhi getTianYue1ByMonth(int month){
		return tianYue1Biao[month];
	}
	

}
